flatten(nil) → nil
flatten(unit(x)) → flatten(x)
flatten(++(x, y)) → ++(flatten(x), flatten(y))
flatten(++(unit(x), y)) → ++(flatten(x), flatten(y))
flatten(flatten(x)) → flatten(x)
rev(nil) → nil
rev(unit(x)) → unit(x)
rev(++(x, y)) → ++(rev(y), rev(x))
rev(rev(x)) → x
++(x, nil) → x
++(nil, y) → y
++(++(x, y), z) → ++(x, ++(y, z))
↳ QTRS
↳ DependencyPairsProof
flatten(nil) → nil
flatten(unit(x)) → flatten(x)
flatten(++(x, y)) → ++(flatten(x), flatten(y))
flatten(++(unit(x), y)) → ++(flatten(x), flatten(y))
flatten(flatten(x)) → flatten(x)
rev(nil) → nil
rev(unit(x)) → unit(x)
rev(++(x, y)) → ++(rev(y), rev(x))
rev(rev(x)) → x
++(x, nil) → x
++(nil, y) → y
++(++(x, y), z) → ++(x, ++(y, z))
++1(++(x, y), z) → ++1(y, z)
FLATTEN(++(unit(x), y)) → FLATTEN(y)
++1(++(x, y), z) → ++1(x, ++(y, z))
REV(++(x, y)) → ++1(rev(y), rev(x))
FLATTEN(++(unit(x), y)) → FLATTEN(x)
FLATTEN(++(x, y)) → FLATTEN(y)
FLATTEN(++(x, y)) → FLATTEN(x)
FLATTEN(unit(x)) → FLATTEN(x)
REV(++(x, y)) → REV(x)
REV(++(x, y)) → REV(y)
FLATTEN(++(x, y)) → ++1(flatten(x), flatten(y))
FLATTEN(++(unit(x), y)) → ++1(flatten(x), flatten(y))
flatten(nil) → nil
flatten(unit(x)) → flatten(x)
flatten(++(x, y)) → ++(flatten(x), flatten(y))
flatten(++(unit(x), y)) → ++(flatten(x), flatten(y))
flatten(flatten(x)) → flatten(x)
rev(nil) → nil
rev(unit(x)) → unit(x)
rev(++(x, y)) → ++(rev(y), rev(x))
rev(rev(x)) → x
++(x, nil) → x
++(nil, y) → y
++(++(x, y), z) → ++(x, ++(y, z))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
++1(++(x, y), z) → ++1(y, z)
FLATTEN(++(unit(x), y)) → FLATTEN(y)
++1(++(x, y), z) → ++1(x, ++(y, z))
REV(++(x, y)) → ++1(rev(y), rev(x))
FLATTEN(++(unit(x), y)) → FLATTEN(x)
FLATTEN(++(x, y)) → FLATTEN(y)
FLATTEN(++(x, y)) → FLATTEN(x)
FLATTEN(unit(x)) → FLATTEN(x)
REV(++(x, y)) → REV(x)
REV(++(x, y)) → REV(y)
FLATTEN(++(x, y)) → ++1(flatten(x), flatten(y))
FLATTEN(++(unit(x), y)) → ++1(flatten(x), flatten(y))
flatten(nil) → nil
flatten(unit(x)) → flatten(x)
flatten(++(x, y)) → ++(flatten(x), flatten(y))
flatten(++(unit(x), y)) → ++(flatten(x), flatten(y))
flatten(flatten(x)) → flatten(x)
rev(nil) → nil
rev(unit(x)) → unit(x)
rev(++(x, y)) → ++(rev(y), rev(x))
rev(rev(x)) → x
++(x, nil) → x
++(nil, y) → y
++(++(x, y), z) → ++(x, ++(y, z))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDP
++1(++(x, y), z) → ++1(y, z)
++1(++(x, y), z) → ++1(x, ++(y, z))
flatten(nil) → nil
flatten(unit(x)) → flatten(x)
flatten(++(x, y)) → ++(flatten(x), flatten(y))
flatten(++(unit(x), y)) → ++(flatten(x), flatten(y))
flatten(flatten(x)) → flatten(x)
rev(nil) → nil
rev(unit(x)) → unit(x)
rev(++(x, y)) → ++(rev(y), rev(x))
rev(rev(x)) → x
++(x, nil) → x
++(nil, y) → y
++(++(x, y), z) → ++(x, ++(y, z))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
++1(++(x, y), z) → ++1(y, z)
++1(++(x, y), z) → ++1(x, ++(y, z))
The value of delta used in the strict ordering is 3/4.
POL(++1(x1, x2)) = x_1 + (1/4)x_2
POL(++(x1, x2)) = 1 + (2)x_1 + x_2
POL(nil) = 0
++(nil, y) → y
++(x, nil) → x
++(++(x, y), z) → ++(x, ++(y, z))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
↳ QDP
↳ QDP
flatten(nil) → nil
flatten(unit(x)) → flatten(x)
flatten(++(x, y)) → ++(flatten(x), flatten(y))
flatten(++(unit(x), y)) → ++(flatten(x), flatten(y))
flatten(flatten(x)) → flatten(x)
rev(nil) → nil
rev(unit(x)) → unit(x)
rev(++(x, y)) → ++(rev(y), rev(x))
rev(rev(x)) → x
++(x, nil) → x
++(nil, y) → y
++(++(x, y), z) → ++(x, ++(y, z))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
REV(++(x, y)) → REV(y)
REV(++(x, y)) → REV(x)
flatten(nil) → nil
flatten(unit(x)) → flatten(x)
flatten(++(x, y)) → ++(flatten(x), flatten(y))
flatten(++(unit(x), y)) → ++(flatten(x), flatten(y))
flatten(flatten(x)) → flatten(x)
rev(nil) → nil
rev(unit(x)) → unit(x)
rev(++(x, y)) → ++(rev(y), rev(x))
rev(rev(x)) → x
++(x, nil) → x
++(nil, y) → y
++(++(x, y), z) → ++(x, ++(y, z))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
REV(++(x, y)) → REV(y)
REV(++(x, y)) → REV(x)
The value of delta used in the strict ordering is 1/8.
POL(++(x1, x2)) = 1/2 + (4)x_1 + (4)x_2
POL(REV(x1)) = (1/4)x_1
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
↳ QDP
flatten(nil) → nil
flatten(unit(x)) → flatten(x)
flatten(++(x, y)) → ++(flatten(x), flatten(y))
flatten(++(unit(x), y)) → ++(flatten(x), flatten(y))
flatten(flatten(x)) → flatten(x)
rev(nil) → nil
rev(unit(x)) → unit(x)
rev(++(x, y)) → ++(rev(y), rev(x))
rev(rev(x)) → x
++(x, nil) → x
++(nil, y) → y
++(++(x, y), z) → ++(x, ++(y, z))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
FLATTEN(++(unit(x), y)) → FLATTEN(y)
FLATTEN(++(unit(x), y)) → FLATTEN(x)
FLATTEN(++(x, y)) → FLATTEN(y)
FLATTEN(unit(x)) → FLATTEN(x)
FLATTEN(++(x, y)) → FLATTEN(x)
flatten(nil) → nil
flatten(unit(x)) → flatten(x)
flatten(++(x, y)) → ++(flatten(x), flatten(y))
flatten(++(unit(x), y)) → ++(flatten(x), flatten(y))
flatten(flatten(x)) → flatten(x)
rev(nil) → nil
rev(unit(x)) → unit(x)
rev(++(x, y)) → ++(rev(y), rev(x))
rev(rev(x)) → x
++(x, nil) → x
++(nil, y) → y
++(++(x, y), z) → ++(x, ++(y, z))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
FLATTEN(++(unit(x), y)) → FLATTEN(y)
FLATTEN(++(unit(x), y)) → FLATTEN(x)
FLATTEN(unit(x)) → FLATTEN(x)
Used ordering: Polynomial interpretation [25,35]:
FLATTEN(++(x, y)) → FLATTEN(y)
FLATTEN(++(x, y)) → FLATTEN(x)
The value of delta used in the strict ordering is 1/16.
POL(++(x1, x2)) = (4)x_1 + (4)x_2
POL(FLATTEN(x1)) = (1/4)x_1
POL(unit(x1)) = 1/4 + (4)x_1
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
FLATTEN(++(x, y)) → FLATTEN(y)
FLATTEN(++(x, y)) → FLATTEN(x)
flatten(nil) → nil
flatten(unit(x)) → flatten(x)
flatten(++(x, y)) → ++(flatten(x), flatten(y))
flatten(++(unit(x), y)) → ++(flatten(x), flatten(y))
flatten(flatten(x)) → flatten(x)
rev(nil) → nil
rev(unit(x)) → unit(x)
rev(++(x, y)) → ++(rev(y), rev(x))
rev(rev(x)) → x
++(x, nil) → x
++(nil, y) → y
++(++(x, y), z) → ++(x, ++(y, z))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
FLATTEN(++(x, y)) → FLATTEN(y)
FLATTEN(++(x, y)) → FLATTEN(x)
The value of delta used in the strict ordering is 1/16.
POL(++(x1, x2)) = 1/4 + (2)x_1 + (2)x_2
POL(FLATTEN(x1)) = (1/4)x_1
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
flatten(nil) → nil
flatten(unit(x)) → flatten(x)
flatten(++(x, y)) → ++(flatten(x), flatten(y))
flatten(++(unit(x), y)) → ++(flatten(x), flatten(y))
flatten(flatten(x)) → flatten(x)
rev(nil) → nil
rev(unit(x)) → unit(x)
rev(++(x, y)) → ++(rev(y), rev(x))
rev(rev(x)) → x
++(x, nil) → x
++(nil, y) → y
++(++(x, y), z) → ++(x, ++(y, z))